C 미리 정의 된 메시지를 사용하여 stdout을 파일로 리디렉션

뜨거운 바퀴

dup () 및 dup2 ()를 사용하여 case 'f'에 대해 열린 파일에 case 's'를 누를 때 stdout에 인쇄되는 메시지를 복제하고 싶습니다.

dup 시스템 호출이 어떻게 작동하는지 그리고 stdout을 파일에 어떻게 복제 할 수 있는지 잘 모르겠습니다. dup을 사용하여 stdout이 가리키는 것을 캡처 한 다음 dup2를 사용하여 화면과 파일 사이를 전환해야한다는 것을 알고 있습니다.

내 코드는 다음과 같습니다.

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>

#define BUFFER_SIZE 128
#define PERMS 0666

int main(int argc, char *argv[])
{
    char outBuffer[BUFFER_SIZE] = "This is a message\n";
    int count;
    int fd;
    char input =0;
    int a;

    if(argc!=2){
        printf("Provide an valid file as an argument\n");
        exit(1);
    }

    if((fd = open(argv[1],O_CREAT|O_WRONLY|O_APPEND,PERMS)) == -1)
    {
        printf("Could not open file\n");
        exit(1);
    }

printf("0 to terminate, s to write to stdout, f to write to file\n");
        do{
        scanf(" %c", &input);
        switch(input)
        {

            case 'f':

            case 's':
            write(1,outBuffer,strlen(outBuffer));
            break;

            default:
            printf("Invalid Choice\n");

         }
     }while(input != '0');

     close(fd);
     return 0;
}
대시오

stdout을 파일로 보내는 기능이있는 'tee'프로그램 (자식 프로세스에 대한 파이프) 사용을 고려하십시오.

   case 'f':
      pipe fd2[2] ;
      pipe(fd2) ;
      if (  fork() > 0 ) {
          // Child
          dup2(fd[0], 0) ;
          close(fd[1]) ;
          close(
          // create command line for 'tee'
          char teecmd[256] ;
          sprintf(teecmd, "...", ...) ;
          execlp(teecmd) ;
      } ;
      // Parent
      fd = fd[1] ;
      close(fd[0]) ;
      ...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

xctool을 사용하여 미리 컴파일 된 헤더 디렉토리 지정

분류에서Dev

macOS : 터미널을 사용하여 시작된 후 프로세스의 STDERR / STDOUT을 리디렉션하는 방법은 무엇입니까?

분류에서Dev

여러 stdout 명령을 하나의 파일로 리디렉션

분류에서Dev

htaccess를 사용하여 전달 된 도메인의 디렉토리를 다른 URL로 리디렉션

분류에서Dev

.htaccess를 사용하여 특정 URL을 404로 리디렉션

분류에서Dev

nohup을 사용하여 stdout을 파일로 리디렉션이 작동하지 않습니다.

분류에서Dev

인수를 사용하여 지정된 디렉토리의 파일을 반복합니다.

분류에서Dev

URL을 사용자 지정 디렉터리로 리디렉션

분류에서Dev

nohup을 사용하여 "stdin 및 stdout 리디렉션"에 영향을주지 않고 로그 파일 교체

분류에서Dev

웹 사이트에서 regex를 사용하여 찾은 모든 이미지 파일을 내 컴퓨터의 지정된 디렉토리에 파이썬으로 다운로드하십시오.

분류에서Dev

C #에서 실행할 때 cmd 출력을 사용하여 driverquery를 파일로 리디렉션하는 방법

분류에서Dev

htaccess를 사용하여 특정 부분이 포함 된 URL을 다른 URL로 리디렉션

분류에서Dev

RewriteRule을 사용하여 하위 폴더 및 매개 변수를 파킹 된 도메인으로 리디렉션

분류에서Dev

GET 매개 변수를 사용하여 HTTP 요청을 정적 파일로 리디렉션하는 방법

분류에서Dev

파일 구조를 사용하여 소스 디렉터리의 모든 파일을 C #의 대상 디렉터리로 복사합니다.

분류에서Dev

htaccess를 사용하여 요청 된 ASP URL을 PHP로 리디렉션

분류에서Dev

삭제 된 이미지 URL을 .htaccess 파일의 홈 페이지로 리디렉션

분류에서Dev

다른 페이지로 리디렉션과 함께 JavaScript를 사용하여 이미지에 표시된 콘텐츠를 정렬하는 방법

분류에서Dev

https를 사용할 때 지정된 포트로 리디렉션

분류에서Dev

UIWebview의 리디렉션 된 URL이 이미지를로드하지 않음

분류에서Dev

잘못된 페이지로 리디렉션하는 .htaccess의 301 리디렉션

분류에서Dev

exec와 tee를 사용하여 로그를 stdout과 로그 파일로 동시에 리디렉션

분류에서Dev

cmake를 사용하여 지정된 디렉토리에 파일 복사

분류에서Dev

c의 Wget을 사용하여 특정 디렉토리에서 특정 파일을 다운로드합니다.

분류에서Dev

c의 Wget을 사용하여 특정 디렉토리에서 특정 파일을 다운로드합니다.

분류에서Dev

Ajax를 사용하여 WEB-INF의 jsp 파일로 리디렉션

분류에서Dev

파일 내용을 C의 다른 프로그램으로 리디렉션

분류에서Dev

while read 행을 사용하여 한 파일의 내용을 다른 파일로 리디렉션하는 경우에만 숫자 "2"를 표시합니다.

분류에서Dev

FILE * stdout을 C ++의 문자열로 리디렉션

Related 관련 기사

  1. 1

    xctool을 사용하여 미리 컴파일 된 헤더 디렉토리 지정

  2. 2

    macOS : 터미널을 사용하여 시작된 후 프로세스의 STDERR / STDOUT을 리디렉션하는 방법은 무엇입니까?

  3. 3

    여러 stdout 명령을 하나의 파일로 리디렉션

  4. 4

    htaccess를 사용하여 전달 된 도메인의 디렉토리를 다른 URL로 리디렉션

  5. 5

    .htaccess를 사용하여 특정 URL을 404로 리디렉션

  6. 6

    nohup을 사용하여 stdout을 파일로 리디렉션이 작동하지 않습니다.

  7. 7

    인수를 사용하여 지정된 디렉토리의 파일을 반복합니다.

  8. 8

    URL을 사용자 지정 디렉터리로 리디렉션

  9. 9

    nohup을 사용하여 "stdin 및 stdout 리디렉션"에 영향을주지 않고 로그 파일 교체

  10. 10

    웹 사이트에서 regex를 사용하여 찾은 모든 이미지 파일을 내 컴퓨터의 지정된 디렉토리에 파이썬으로 다운로드하십시오.

  11. 11

    C #에서 실행할 때 cmd 출력을 사용하여 driverquery를 파일로 리디렉션하는 방법

  12. 12

    htaccess를 사용하여 특정 부분이 포함 된 URL을 다른 URL로 리디렉션

  13. 13

    RewriteRule을 사용하여 하위 폴더 및 매개 변수를 파킹 된 도메인으로 리디렉션

  14. 14

    GET 매개 변수를 사용하여 HTTP 요청을 정적 파일로 리디렉션하는 방법

  15. 15

    파일 구조를 사용하여 소스 디렉터리의 모든 파일을 C #의 대상 디렉터리로 복사합니다.

  16. 16

    htaccess를 사용하여 요청 된 ASP URL을 PHP로 리디렉션

  17. 17

    삭제 된 이미지 URL을 .htaccess 파일의 홈 페이지로 리디렉션

  18. 18

    다른 페이지로 리디렉션과 함께 JavaScript를 사용하여 이미지에 표시된 콘텐츠를 정렬하는 방법

  19. 19

    https를 사용할 때 지정된 포트로 리디렉션

  20. 20

    UIWebview의 리디렉션 된 URL이 이미지를로드하지 않음

  21. 21

    잘못된 페이지로 리디렉션하는 .htaccess의 301 리디렉션

  22. 22

    exec와 tee를 사용하여 로그를 stdout과 로그 파일로 동시에 리디렉션

  23. 23

    cmake를 사용하여 지정된 디렉토리에 파일 복사

  24. 24

    c의 Wget을 사용하여 특정 디렉토리에서 특정 파일을 다운로드합니다.

  25. 25

    c의 Wget을 사용하여 특정 디렉토리에서 특정 파일을 다운로드합니다.

  26. 26

    Ajax를 사용하여 WEB-INF의 jsp 파일로 리디렉션

  27. 27

    파일 내용을 C의 다른 프로그램으로 리디렉션

  28. 28

    while read 행을 사용하여 한 파일의 내용을 다른 파일로 리디렉션하는 경우에만 숫자 "2"를 표시합니다.

  29. 29

    FILE * stdout을 C ++의 문자열로 리디렉션

뜨겁다태그

보관