我正在使用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()并终止进程,但我认为这是一个肮脏的解决方案。
答案 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;
}