यह होमवर्क असाइनमेंट का हिस्सा है। खैर, मैं अपने होमवर्क में काम नहीं कर सका, इसलिए मैंने एक स्निपेट निकाला है और यह पता लगाने के लिए इसके साथ मरना शुरू कर दिया है कि क्या गलत है।लिनक्स पर O_APPEND मोड में खोलने का उपयोग करके सी में फ़ाइल कैसे संलग्न करें?
सी मेंlinux पर मैं खोलने के लिए/एक पाठ फ़ाइल बनाने के लिए, यह करने के लिए कुछ लिखते हैं, इसे बंद, पढ़ने में खोलने/लिख सकते हैं और मोड संलग्न, और फिर इसे के अंत तक कुछ भी संलग्न (कोशिश कर रहा हूँ इस उदाहरण में, स्ट्रिंग ", दोस्त")। कुछ भी जोड़ा जा रहा है, हालांकि, लेकिन लेखन विधि भी एक त्रुटि फेंक नहीं है। मुझे यकीन नहीं है कि क्या हो रहा है।
कोड यह रहा:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#define BUFFSIZE 4096
int main(){
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
int fd = open("tempfile.txt", O_RDWR | O_CREAT, mode);
char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l'};
size_t n = sizeof(buf);
if(write (fd, buf, n) < 0){
printf("Error in write\n");
printf("%s", strerror(errno));
return 1;
}
close(fd);
int fd2 = open("tempfile.txt", O_RDWR | O_APPEND);
printf("appending dude:\n");
char buf2[6] = {',', ' ', 'd', 'u', 'd', 'e'};
size_t p = sizeof(buf2);
if(write (fd2, buf2, p) < 0){
printf("Error in write\n");
printf("%s", strerror(errno));
return 1;
}
char buf3[BUFFSIZE];
lseek(fd2, 0, SEEK_SET);
if(read (fd2, buf3, BUFFSIZE) < 0){
printf("Error in read\n");
printf("%s", strerror(errno));
return 2;
}
int i;
for (i = 0; i < strlen(buf3); ++i){
printf("%c", buf3[i]);
}
printf("\n");
close(fd2);
return 0;
}
मैं इसे किया जा रहा है कुछ अलग संयोजनों के साथ खिलवाड़, मोड चर बदलते S_IRWXU करने से सख्ती से एक अनुमति जारी होने की संभावना को खत्म करने की कोशिश की है | एस_आईआरडब्ल्यूएक्सजी | S_IRWXO, मेरे दूसरे खुले बयान में तीसरे तर्क के रूप में मोड को पास कर रहा है, दूसरे खुले बयान में तीसरे तर्क के रूप में संलग्न मोड को पास करने के लिए, केवल दूसरे खुले बयान में संलग्न मोड में फ़ाइल खोल रहा है,
सर्वश्रेष्ठ मैं इसे APPEND मोड के बिना आरडीडब्ल्यूआर में खोल सकता हूं, और फिर मौजूदा टेक्स्ट पर सीधे लिख सकता हूं ... लेकिन यह वही नहीं है जो मैं चाहता हूं। और ध्यान दें, मुझे चीज की तरह चीजों से अवगत है, लेकिन यहां का उद्देश्य फ़ाइल के अंत में पाठ जोड़ने के लिए एपेंड मोड का उपयोग करना कड़ाई से है। मैं छेड़छाड़ नहीं करना चाहता।
इस पर देख रहे हैं से कोई सुराग? मुझे यकीन है कि कुछ स्पष्ट है जो मुझे समझ में नहीं आता है।
बहुत धन्यवाद।
धन्यवाद! इससे मेरी समस्या हल हो गई, और मुझे उन विशिष्ट परिणामों को मिला जो मैं ढूंढ रहा था। – Deranger