0

私は2つの簡単な仕事をしています。1つ目はパイプからの読み取りです。そして2つ目は、タイムアウトによっていくつかの操作を行うことです。問題は、1 つのプロセスで動作させることです (2 つのプロセスで実行する方法は知っていますが、私には不向きです..)。

また、cron を使用しない理由がいくつかあります。2 つのジョブを非同期で実行する必要があります (互いにブロックしない)。

何か案は?

#include<stdio.h>                                                                                                                                
#include<stdlib.h>

void someAnotherJob();

main(){
    printf ("Hello!\n");
    int c;
    FILE *file, *file2;

    file = fopen("/dev/ttyUSB0", "r");
    file2 = fopen("out.txt", "a");

    if (file) {
        while ((c = getc(file)) != EOF){
            fputc(c, file2);
            fflush(file2);
        }
        fclose(file);
    }


    while (1) {
        someAnotherJob();
        sleep(10);
    }

}

void someAnotherJob()
{
    printf("Yii\n");
}
4

1 に答える 1

1

select を使用して、多くの記述子からノンブロッキング I/O を実行できます。

fd_set rfds;
FD_ZERO(&rfds);
FILE* files[2];

if( !( files[0] = fopen( "/dev/ttyUSB0", "r"))
    // error

if( !( files[1] = fopen( "out.txt", "a"))
    // error

// for each file successfully opened
FD_SET( fileno( files[i]), &rfds);

int returned = select( highfd + 1, &rfds, NULL, NULL, NULL);

if ( returned) {
    // for each file successfully opened
        if ( FD_ISSET( fileno( files[i]), &rfds)) {
            // read
            printf( "descriptor %d ready to read", i);
        }
    }
}
于 2014-11-19T09:43:07.927 に答える