fdopen(), fileno()을 사용하면 기존 파일 설명자를 사용하여 스트림을 열 수 있습니다. 그러나 스트림을 사용하여 파일을 열면 파일을 닫는 적절한 방법은 fclose()FILE 포인터입니다. 어떻게 스트림을 닫을 수 있지만 열린 파일 설명자를 유지할 수 있습니까? 이 동작은 닫는 경우를 제외하고는 fflush()을 호출 한 다음 fileno()을
개행을 억제하기 위해 % [^ \ n]을 사용합니다. 입력에서 공백을 건너 뛰는 형식이 무엇인지 제안 할 수 있습니다 (예 : "hallo stackflow"를 입력해야하는 경우). 나는 fgets를 알고 도착하지만 그들을 사용하고 싶지 않다, 그들은 문제를 만들고있다.
C에서 "백그라운드 모드"로 호출 된 프로그램을 탐지하는 방법은 무엇입니까? 대화 형 또는 백그라운드에서 실행하려는 프로그램이 있습니다. stdin에서 읽지 말고 "Stopped : tty input"상태로 끝내지 말아야합니까? stdin이 닫혀 있는지 테스트해야합니까? 어떻게해야합니까? 편집 : isatty는 좋은 생각 인 것 같습니다. 그러나 stdin
, 내가 입력 할 수 STDOUT에 인쇄 $|++;
아무것도 자동 FFLUSH() 에드 될 것입니다. C에 해당하는 항목이 있습니까? 다른 말로하면, stdio가 자동으로 stdout을 수행 할 때마다 printf()를 호출 한 후 stderr을 자동으로 플러시하는 방법이 있습니까?
stdio::rename() 함수 호출이 완전히 동기이면 방황하고있었습니다. 새로운 이름으로 사용할 수있는 함수 호출에서 반환 된 직후 파일이 생기거나 그렇게 될 때까지 약간의 시간 (몇 밀리 초)이 걸릴 수 있습니까? 나는 자극적 인 타이밍 버그를 조사 중이며 후자의 경우가 발생한다고 의심합니다. 내 소프트웨어는 Win2k3 서버 컴퓨터에서 실행됩니다.
getline과 동일한 작업을 수행하지만 FILE * 스트림 대신 연결된 소켓에서 작동하는 libc 함수가 있습니까? 해결 방법은 소켓에서 fdopen을 호출하는 것입니다. 그렇게 할 때 돌봐야 할 것이 무엇입니까? 그것을하는 이유는 무엇입니까 /하지 마십시오. getline과 co를 호출하는 분명한 이유가 있지만 맞춤 getline을 다시 작성하는 것이
입력 파일을 대체 할 수 있도록 입력 파일과 출력 파일 모두에 동일한 파일 이름을 내 프로그램에 사용할 가능성을 추가하는 방법에 대해 생각합니다. , /* input == output in this case */
FILE *inf = fopen(input, "r");
remove(output);
FILE *outf = fopen(output, "w")