how was the pipe(2) system call working in “traditional” Unix
This is what perldoc -f syscall
says:
There's a problem with
syscall(SYS_pipe())
: it returns the file
number of the read end of the pipe it creates, but there is no way
to retrieve the file number of the other end. You can avoid this
problem by usingpipe
instead.
However, that doesn't check out. syscall
works with SYS_pipe
just like with any other system call, and I'm perfectly able to retrieve both ends:
perl -e '
require "syscall.ph";
my $p = pack "i2";
syscall SYS_pipe(), $p;
print join(",", unpack "i2", $p), "n"
'
3,4
That was on linux, it's the same on openbsd and solaris provided that you take care of some differences (on solaris, the system call is actually pipe2(2)
, so syscall 42, $p, 0
).
A comment in fs/pipe.c
in the linux kernel source says:
/*
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
So what was that "traditional" way? And are there any modern systems where that's still the case?
pipe history system-calls
New contributor
add a comment |
This is what perldoc -f syscall
says:
There's a problem with
syscall(SYS_pipe())
: it returns the file
number of the read end of the pipe it creates, but there is no way
to retrieve the file number of the other end. You can avoid this
problem by usingpipe
instead.
However, that doesn't check out. syscall
works with SYS_pipe
just like with any other system call, and I'm perfectly able to retrieve both ends:
perl -e '
require "syscall.ph";
my $p = pack "i2";
syscall SYS_pipe(), $p;
print join(",", unpack "i2", $p), "n"
'
3,4
That was on linux, it's the same on openbsd and solaris provided that you take care of some differences (on solaris, the system call is actually pipe2(2)
, so syscall 42, $p, 0
).
A comment in fs/pipe.c
in the linux kernel source says:
/*
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
So what was that "traditional" way? And are there any modern systems where that's still the case?
pipe history system-calls
New contributor
add a comment |
This is what perldoc -f syscall
says:
There's a problem with
syscall(SYS_pipe())
: it returns the file
number of the read end of the pipe it creates, but there is no way
to retrieve the file number of the other end. You can avoid this
problem by usingpipe
instead.
However, that doesn't check out. syscall
works with SYS_pipe
just like with any other system call, and I'm perfectly able to retrieve both ends:
perl -e '
require "syscall.ph";
my $p = pack "i2";
syscall SYS_pipe(), $p;
print join(",", unpack "i2", $p), "n"
'
3,4
That was on linux, it's the same on openbsd and solaris provided that you take care of some differences (on solaris, the system call is actually pipe2(2)
, so syscall 42, $p, 0
).
A comment in fs/pipe.c
in the linux kernel source says:
/*
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
So what was that "traditional" way? And are there any modern systems where that's still the case?
pipe history system-calls
New contributor
This is what perldoc -f syscall
says:
There's a problem with
syscall(SYS_pipe())
: it returns the file
number of the read end of the pipe it creates, but there is no way
to retrieve the file number of the other end. You can avoid this
problem by usingpipe
instead.
However, that doesn't check out. syscall
works with SYS_pipe
just like with any other system call, and I'm perfectly able to retrieve both ends:
perl -e '
require "syscall.ph";
my $p = pack "i2";
syscall SYS_pipe(), $p;
print join(",", unpack "i2", $p), "n"
'
3,4
That was on linux, it's the same on openbsd and solaris provided that you take care of some differences (on solaris, the system call is actually pipe2(2)
, so syscall 42, $p, 0
).
A comment in fs/pipe.c
in the linux kernel source says:
/*
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though.
*/
So what was that "traditional" way? And are there any modern systems where that's still the case?
pipe history system-calls
pipe history system-calls
New contributor
New contributor
New contributor
asked 6 mins ago
CăcărăuCăcărău
1
1
New contributor
New contributor
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
});
}
});
Căcărău is a new contributor. Be nice, and check out our Code of Conduct.
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%2funix.stackexchange.com%2fquestions%2f498720%2fhow-was-the-pipe2-system-call-working-in-traditional-unix%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Căcărău is a new contributor. Be nice, and check out our Code of Conduct.
Căcărău is a new contributor. Be nice, and check out our Code of Conduct.
Căcărău is a new contributor. Be nice, and check out our Code of Conduct.
Căcărău is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- 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%2funix.stackexchange.com%2fquestions%2f498720%2fhow-was-the-pipe2-system-call-working-in-traditional-unix%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