2012-01-18 5 views
0

以下のコードは、単にファイルの書き込みに要した時間を計算しています。write()とread()sys呼び出しの間の混乱

#include<time.h> 
void main() 
{ 
    int fp; 
    long a,b; 
    char *str = "Life is like that only"; 
    fp = open("tmp.txt",O_WRONLY,0666); 
    time(&a); 
    write(fp,str); 
    time(&b); 
/*(b-a) should be the time taken to write 
    * the file tmp.txt. 
    */ 
    close(fp); 
    return; 
} 

私の質問は、私たちは、単一のCPUを持っているならば、(B-A)にかかる時間が正確だろうか、それが並列に実行している他のプロセスの実行によって影響を受けることができるかどうかということです。 ここでは、write()とread()は原子システムのように扱えますが、成功しないかのようにEINTRが設定されています。その実行は他のすべてのプロセスが保留中です。

答えて

0

プロセスが書き込みを完了するのを待っている間に、I/Oを使用していない、またはI/Oを使用している他のプロセスを実行できます。完了する。

実際には、通常のファイルへの小さな書き込みでは、データがカーネルスペースバッファにコピーされた直後にwrite()が返されます。

+0

データの量は私の心配ではありません。正確なものであるか間違いを起こす可能性があるのは時間です。 –