如何在c程序中启动并终止进程(命令shell)?

时间:2014-01-12 05:01:20

标签: c shell command-line arduino

我正在使用arduino将热电偶中的一些数据存储到笔记本电脑(OSX)。我想在c程序中使用存储的数据,但我有些疑惑。

我有这个小例子:

include <stdio.h>
include <stdlib.h>


int main (void)

{
    int a;
    a=fork();
    if(a==0)
    {
    system("cat /dev/cu.usbmodem1a21 - 9600 >> num.txt");
    }

    return 0;
}

我正在尝试将串行(arduino)重定向到某个文件,所以我使用fork复制进程并在代码仍在执行时运行命令。然而,这是一个肮脏的解决方案,因为我需要使用控制台手动终止进程。我想知道是否有办法在同一程序中使用c代码终止进程。

提前致谢。

ps:我尝试过使用getpid()并终止进程,但我认为这是一个肮脏的解决方案。

1 个答案:

答案 0 :(得分:0)

无需调用getpid()来获取pid。函数fork()在父进程中返回子进程的pid,在子进程中返回0。因此,您可以直接向子进程发送SIGKILL。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

int main()
{
    pid_t pid;
    pid = fork();
    if (pid == 0) {
        system("cat /dev/cu.usbmodem1a21 - 9600 >> num.txt");
    } else {
        /* ops */
        kill(pid, SIGKILL);
    }
    return 0;
}