linux 中实现延迟45分钟后执行命令,写了一段c程序,实现延迟,接下来,该如何执行命令呢,也就是shell

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 中实现延迟45分钟后执行命令,写了一段c程序,实现延迟,接下来,该如何执行命令呢,也就是shell相关的知识,希望对你有一定的参考价值。

目标:45分钟后执行命令 !source /mnt/us/DK_System/startdk.sh &
目前思路:写了一段c程序延迟45分钟

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
int a;
a=100;
printf("hello\n");
sleep(2400000);
printf("What is your name\n");
system("pause");
return 0;

问题:接下里该如何去执行shell命令,是在c代码中实现,还是c语言里调用shell文件。如何 实现,谢谢。
新情况:嵌入式linux没有at命令 还是c代码实现吧

参考技术A 1、system(执行shell 命令)
相关函数 fork,execve,waitpid,popen
表头文件 #include<stdlib.h>
定义函数 int system(const char * string);
函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c
string来执行参数string字符串所代表的命令,此命令执行完后随
即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时
搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-
1。若参数string为空指针(NULL),则返回非零值。如果system()调
用成功则最后会返回执行shell命令后的返回值,但是此返回值也有
可能为system()调用/bin/sh失败所返回的127,因此最好能再检查
errno 来确认执行成功。
附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会
继承环境变量,通过环境变量可能会造成系统安全的问题。

例如:
#include<stdlib.h>
main()

system(“ls -al /etc/passwd /etc/shadow”); //换成./test.sh 可执行相关脚本


当然也可以用管道或exec函数族来调用shell
参考技术B 你不用这样写C程序,这样还占用CPU。你可以用linux的at命令,然后再调用你的程序就行了。

PS:如果你非要在c里调用程序的话,可以system("your cmd"); 但注意程序本身的路径。

那就system("your cmd")就好了 注意路径追问

大神写个代码吧:
at now +45 minutes
然后呢,怎么写 ,如何执行下面代码:
#!/bin/sh
killall ebook
killall lipc-wait-event
/etc/init.d/framework restart

谢谢

本回答被提问者采纳
参考技术C 用gcc生成可执行代码
再用./file 即可

另外linux下的C编程没有必要用system("pause");

希望有用!
参考技术D 看完你的问题,没有明白你在讲什么追问

蛋疼的人,看不懂还jb‘码字,蛋碎了吧

如何在java中实现延迟几秒钟

参考技术A 可以使用sleep函数。 参考技术B Thread.sleep(1000);
参数是毫秒
参考技术C Thread.Sleep(3000) 参考技术D Java支持多线程,而Java程序运行延迟可以使用线程的休眠方法来解决!
我们先看Thread类的解释:
Thread类是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程!
Thread类存在很多的方法,这些方法大部分都抛出异常,所以在调用这些方法的时候需要处理异常,而处理异常有两种方式----抛出异常使用throws和try catch 捕捉异常。
线程休眠方法如下:
public static void sleep(long millis)throws InterruptedException
注意:形参是以毫秒为单位。(1秒=1000毫秒)

以线程休眠为例来实现延迟几秒钟,写一段代码:

public class Thread_Demo9 implements Runnable
//重写run方法---此方法是线程的主体

public void run()
//不想让线程一下子全部显示出来,而是隔一秒显示一条
for(int i=1;i<=50;i++)
//线程处理方式---try catch捕捉

try
Thread.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();

System.out.println(Thread.currentThread().getName()+"运行---"+i);


//在main方法中,创建线程对象并启动

public static void main(String[] args)
Runnable r = new Thread_Demo9();
Thread t1 = new Thread(r,"线程A");
t1.start();


显示的结果: 每隔一秒输出一次线程执行的语句。

以上是关于linux 中实现延迟45分钟后执行命令,写了一段c程序,实现延迟,接下来,该如何执行命令呢,也就是shell的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中实现延迟几秒钟

lua脚本延迟10秒怎么写

显示使用延迟作业一段时间后运行的方法

如何让linux每隔五分钟进行一次ping命令

如何在电子中实现延迟深度链接

Android中实现延时执行操作的几种方法