passing integers in place of file descriptor when calling write command in c
void main()
{
pid_t pid;
int i;
char buf[BUF_SIZE];
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf, "This line is from pid %d, value = %dn", pid, i);
write(1, buf, strlen(buf));
// printf("%s",buf);
}
}
I've got the given simple code to show fork process in c. I noticed that when I pass any value greater than 2 in place of 1 in write command the code does not print anything. Why is this happening?
c
add a comment |
void main()
{
pid_t pid;
int i;
char buf[BUF_SIZE];
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf, "This line is from pid %d, value = %dn", pid, i);
write(1, buf, strlen(buf));
// printf("%s",buf);
}
}
I've got the given simple code to show fork process in c. I noticed that when I pass any value greater than 2 in place of 1 in write command the code does not print anything. Why is this happening?
c
2
You should check thereturn
value ofwrite
for an error.
– Fiddling Bits
Nov 21 '18 at 21:20
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
note that thefork
part is irrelevant to the question. The example could be reduced even more to only include awrite
call.
– Jean-François Fabre
Nov 21 '18 at 21:31
add a comment |
void main()
{
pid_t pid;
int i;
char buf[BUF_SIZE];
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf, "This line is from pid %d, value = %dn", pid, i);
write(1, buf, strlen(buf));
// printf("%s",buf);
}
}
I've got the given simple code to show fork process in c. I noticed that when I pass any value greater than 2 in place of 1 in write command the code does not print anything. Why is this happening?
c
void main()
{
pid_t pid;
int i;
char buf[BUF_SIZE];
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf, "This line is from pid %d, value = %dn", pid, i);
write(1, buf, strlen(buf));
// printf("%s",buf);
}
}
I've got the given simple code to show fork process in c. I noticed that when I pass any value greater than 2 in place of 1 in write command the code does not print anything. Why is this happening?
c
c
edited Nov 21 '18 at 21:22


NathanOliver
92.7k16129195
92.7k16129195
asked Nov 21 '18 at 21:19
Ashray SinhaAshray Sinha
51
51
2
You should check thereturn
value ofwrite
for an error.
– Fiddling Bits
Nov 21 '18 at 21:20
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
note that thefork
part is irrelevant to the question. The example could be reduced even more to only include awrite
call.
– Jean-François Fabre
Nov 21 '18 at 21:31
add a comment |
2
You should check thereturn
value ofwrite
for an error.
– Fiddling Bits
Nov 21 '18 at 21:20
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
note that thefork
part is irrelevant to the question. The example could be reduced even more to only include awrite
call.
– Jean-François Fabre
Nov 21 '18 at 21:31
2
2
You should check the
return
value of write
for an error.– Fiddling Bits
Nov 21 '18 at 21:20
You should check the
return
value of write
for an error.– Fiddling Bits
Nov 21 '18 at 21:20
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
note that the
fork
part is irrelevant to the question. The example could be reduced even more to only include a write
call.– Jean-François Fabre
Nov 21 '18 at 21:31
note that the
fork
part is irrelevant to the question. The example could be reduced even more to only include a write
call.– Jean-François Fabre
Nov 21 '18 at 21:31
add a comment |
1 Answer
1
active
oldest
votes
you're performing a raw write
call where at the start of your program:
- 1 is the standard output descriptor
- 2 is the standard error descriptor
Both write to the console by default (and 0 is the standard input, cannot be written to)
Other descriptors are invalid unless they've been returned by an open
call. Since you don't check the return value of write
, you can't see that an error code is returned (probably EBADF
, bad file descriptor)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420606%2fpassing-integers-in-place-of-file-descriptor-when-calling-write-command-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
you're performing a raw write
call where at the start of your program:
- 1 is the standard output descriptor
- 2 is the standard error descriptor
Both write to the console by default (and 0 is the standard input, cannot be written to)
Other descriptors are invalid unless they've been returned by an open
call. Since you don't check the return value of write
, you can't see that an error code is returned (probably EBADF
, bad file descriptor)
add a comment |
you're performing a raw write
call where at the start of your program:
- 1 is the standard output descriptor
- 2 is the standard error descriptor
Both write to the console by default (and 0 is the standard input, cannot be written to)
Other descriptors are invalid unless they've been returned by an open
call. Since you don't check the return value of write
, you can't see that an error code is returned (probably EBADF
, bad file descriptor)
add a comment |
you're performing a raw write
call where at the start of your program:
- 1 is the standard output descriptor
- 2 is the standard error descriptor
Both write to the console by default (and 0 is the standard input, cannot be written to)
Other descriptors are invalid unless they've been returned by an open
call. Since you don't check the return value of write
, you can't see that an error code is returned (probably EBADF
, bad file descriptor)
you're performing a raw write
call where at the start of your program:
- 1 is the standard output descriptor
- 2 is the standard error descriptor
Both write to the console by default (and 0 is the standard input, cannot be written to)
Other descriptors are invalid unless they've been returned by an open
call. Since you don't check the return value of write
, you can't see that an error code is returned (probably EBADF
, bad file descriptor)
edited Nov 21 '18 at 21:30
answered Nov 21 '18 at 21:25


Jean-François FabreJean-François Fabre
104k955112
104k955112
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420606%2fpassing-integers-in-place-of-file-descriptor-when-calling-write-command-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
You should check the
return
value ofwrite
for an error.– Fiddling Bits
Nov 21 '18 at 21:20
1 is for standard output descriptor, 2 is for error. Others aren't open
– Jean-François Fabre
Nov 21 '18 at 21:24
note that the
fork
part is irrelevant to the question. The example could be reduced even more to only include awrite
call.– Jean-François Fabre
Nov 21 '18 at 21:31