从system()更改为exec(),这会加快我的代码速度吗?

0 c linux embedded embedded-linux

我需要在C代码中执行一些Linux命令行,所以我选择使用system()。不幸的是,它放进去了while(1),也许会使我的程序变慢。如果我使用exec()家庭会改善吗?如果是,您能告诉我如何将此行从转换system()exec()?

while(1) {
........
system("echo \"x = 800 , y = 480 , swap = swap_32_16\"> /sys/bus/platform/drivers/display/layer0");
........
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ant*_*ala 10

exec*等效

system("echo \"x = 800 , y = 480 , swap = swap_32_16\">"
       "/sys/bus/platform/drivers/display/layer0");
Run Code Online (Sandbox Code Playgroud)

就像

execl("/bin/sh", "/bin/sh", "-c", "echo \"x = 800 , y = 480,"
      " swap = swap_32_16\">/sys/bus/platform/drivers/display/layer0", (char*)NULL);
Run Code Online (Sandbox Code Playgroud)

问题在于,它将执行的命令完全相同system(在新分支的子进程中),只键入更多命令。并且由于exec 新执行的程序替换了当前进程,因此该exec调用将是您的程序执行的最后一个调用,除非您fork()首先处理该进程...并处理失败,然后...等待子进程完成等。


真正的解决方案,当然是在所有不使用外部命令,只是做在C:

FILE *f = fopen("/sys/bus/platform/drivers/display/layer0", "w");
if (!f) { 
    // ... could not open ... 
}
fputs("x = 800 , y = 480 , swap = swap_32_16\n", f);
fclose(f);
Run Code Online (Sandbox Code Playgroud)