Linux两个进程交换信息,如何在Linux中的进程之间交换二进制数据
我需要創建一個可以進行無線網絡掃描的linux應用程序,將結果放入一個結構中并以某種方式將其發送到另一個將使用該數據的主應用程序.我最初的想法是在主應用程序中創建一個管道,fork并通過execl啟動另一個進程,它可以寫入管道.像這樣的東西:
pid_t pid = NULL;
int pipefd[2];
FILE* output;
char line[256];
pipe(pipefd);
pid = fork();
if (pid == 0)
{
// Child
close(pipefd[0]);
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
execl("/sbin/wifiscan", "/sbin/wifiscan", (char*) NULL);
}
//Only parent gets here. Listen to what the wifi scan says
close(pipefd[1]);
output = fdopen(pipefd[0], "r");
while(fgets(line, sizeof(line), output))
{
//Here we can listen to what wifiscan sends to its standard output
}
但是,如果輸出中出現二進制0,則無法使用二進制數據.所以我可以將wifiscan應用程序的輸出格式化為文本,將其發送到管道并在主應用程序中解析,或者以我還不知道的更智能的方式進行.
在Linux中的進程之間可靠地交換數據的其他方法是什么?
總結
以上是生活随笔為你收集整理的Linux两个进程交换信息,如何在Linux中的进程之间交换二进制数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《最后的荣光》名将图鉴——张飞
- 下一篇: linux 查看opengl版本,lin