0
我想發送一個字符串到另一個程序 但我有問題使用O_WRONLY | O_NONBLOCK, 如果我用O_RDWR代替它,程序工作正常 但我想知道是否有方法發送/讀取 字符串而不使用O_RDWR。現在它由於某種原因返回空字符串 。使用命名管道發送兩個程序之間的字符串
編劇:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#define MAX_LINE 1024
int main(int argc, char **argv)
{
char line[MAX_LINE];
int pipe;
printf("Enter line: \n");
fgets(line, MAX_LINE, stdin);
pipe = open("link1", O_WRONLY | O_NONBLOCK);
write(pipe, line, strlen(line));
system("./run"); //executing the reader
close(pipe);
return 0;
}
讀者:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#define MAX_BUF 1024
int main(int argc, char **argv)
{
int fd;
char * link1 = "link1";
char buf[MAX_BUF];
fd = open(link1, O_RDONLY | O_NONBLOCK);
read(fd, buf, MAX_BUF);
printf("%s\n", buf);
close(fd);
return 0;
}
please:檢查讀/寫的返回值,然後更新問題 – INS
還檢查'open'的返回值(0表示錯誤)。無論如何,看起來你需要首先啓動你的閱讀器,然後再嘗試打開它來寫作。 – ChrisWue
-1意味着'open'的錯誤。 0是一個有效的文件描述符 – Duck