Angel.King.47
Angel.King.47

Reputation: 8004

fwrite a pid_t not working

I have the follwoing code:

...
printf("Started %d", pid);
FILE * fh;
fh = fopen("run/source.pid", "wb");
fwrite(&pid, sizeof(int), 1, fh);
fclose(fh);

However the written pid file writes jargon, and not the integer, I though pid_t was just an int, I even tied doing sizeof(pid_t) for the second argument I get similar issues.

Any ideas? Thanks for the help in advance.

Thanks

Upvotes: 0

Views: 417

Answers (1)

yeyo
yeyo

Reputation: 3009

well I do not understand quite well the question (too little context), but the issue may be is that you are seeing the file in a text editor, terminal, etc..

fwrite() writes raw data, for example, suppose you have a pid number, lets say 12, and you write that number using fwrite like this:

fwrite(&pid, sizeof(int), 1, file);

fwrite() will write a 32 bit integer into the file file, that is, depending in your processor type, a byte sequence like this: 00 00 00 12

However

fprintf() will write a byte sequence of : 49 50 (ASCII characters platform independent) visible among all terminals or text editors.

Hope this helps.

Upvotes: 1

Related Questions