我有shell脚本,我需要在后台运行该连续工作。
例如:
#include <stdio.h>
int main(int argc, char **argv)
{
for (; ;) {
system("./dup -r /root/duptest/");
sleep(60);
}
return 0;
}
它每分钟都在工作和运行。
第一个问题:如何在没有放置&amp;的情况下运行此背景(例如&amp; - &gt; ./dup ...&amp;)。
第二个问题:如何将shell代码放入C源代码中?
我发现了这个问题,我是否需要为所有行添加\n\
?这很难编辑。
#include <stdio.h>
#include <stdlib.h>
#define SHELLSCRIPT "\
#/bin/bash \n\
echo \"hello\" \n\
echo \"how are you\" \n\
echo \"today\" \n\
"
int main()
{
system(SHELLSCRIPT);
return 0;
}
第三个问题:我如何在C中使用shell参数,如下所示:
./dup.exe -r /blablabla...
平均
system("./dup -r /blablabla");
我需要在编译的C程序中使用$ 1 $ 2参数。
答案 0 :(得分:1)
问题1:查找“如何在UNIX中将进程作为deamon进程”尽管守护程序进程对您的要求来说太过分了,但您可以根据您的要求执行步骤,直到进程运行为止
问题3:您需要有命令行参数,检查一下。您的main应该看起来像main(int arg_count, char *args_vector[]){...}
,并且您可以将每个命令行参数作为数组元素
答案 1 :(得分:1)
Q1:使用fork()
并且不要等待孩子的PID。
Q2:C和C ++将连接相邻的字符串文字,如下所示:
static const char script[] =
"echo hello\n"
"echo how are you\n"
"echo today"
;
int main(int argc, char* argv[])
{
puts(script); // so you can see what it looks like
// system(script); // <-- uncomment this line to actually run it.
return 0;
}
问题3:使用argc
和argv
参数main()
来构建您要执行的命令行。