पर कॉल करते समय अमान्य तर्क मैं splice syscall को आजमाने की कोशिश करता था। मैं इस समारोह है - यह एक से दूसरे फ़ाइल की सामग्री की नकल करना चाहिए:लिनक्स splice()
static void test_splice(int in, int out) {
int i = 0, rcvd = 0;
int filedes[2];
off_t off = 0;
if (pipe(filedes) < 0) {
perror("Kicha pipe");
exit(EXIT_FAILURE);
}
for (i = 0; i < NUMLOOPS; ++i) {
if ((rcvd = splice(in, NULL, filedes[1], NULL, BUFSIZE, SPLICE_F_MORE | SPLICE_F_MOVE)) < 0) {
perror("splice");
exit(EXIT_FAILURE);
}
if (splice(filedes[0], NULL, out, NULL, rcvd, SPLICE_F_MORE | SPLICE_F_MOVE) < 0) {
perror("splice");
exit(EXIT_FAILURE);
}
}
}
पहले चरण में ब्याह करने के लिए दूसरी कॉल (perror से अमान्य तर्क) रिटर्न EINVAL हर - क्या कारण हो सकता है?
फाइल सिस्टम (ओं) पर अपनी फ़ाइलें हैं किस तरह का? – Duck
दोनों ext3, लेकिन मैंने/dev/zero से पढ़ने और उसी त्रुटि के साथ/dev/null को पढ़ने का भी प्रयास किया। –
मैंने इसे हल किया - मैंने "ए +" मोड के साथ फॉपेन का उपयोग करके फ़ाइल खोली - जब यह "डब्ल्यू" में बदल गया - यह काम करता था। –