如何将bash脚本放在C程序中

时间:2015-01-21 10:02:29

标签: c bash shell

我有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参数。

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:使用argcargv参数main()来构建您要执行的命令行。