LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Kernel (https://www.linuxquestions.org/questions/linux-kernel-70/)
-   -   write on /proc entry through user space (https://www.linuxquestions.org/questions/linux-kernel-70/write-on-proc-entry-through-user-space-936354/)

karan2386 03-25-2012 01:56 PM

write on /proc entry through user space
 
I am writing to /proc/tx_info through user space by following programme:

int main()
{
char *prot;
char addr[14];
FILE *fp;
int i = 0;
prot = (char *)malloc(sizeof(char *));
//addr = (char *)malloc(sizeof(char *));
printf("\n enter the protocol for test\n");
scanf(" %s",prot);
printf("\n enter the addr::");
scanf(" %s",addr);

fp =fopen("/proc/tx_info","w");
if(fp == NULL)
{
printf("\n unable to write on /proc/tx_info \n");
}
fprintf(fp,"%s ",prot);
while(addr[i] != '\0')
{
fprintf(fp,"%c",addr[i]);
i++;
}
fclose(fp);

and have a proc read and write programme as follows

char tx_buffer[100];
char tx_buffer[100];
static int proc_max_size = 100;
static unsigned long buffer_size =0;


int proc_read(char *buffer,char **buffer_location,off_t offset,int buffer_length,int *eof,void *data)
{
int ret;
if(offset>0)
{
ret=0;
} else {
memcpy(buffer,tx_buffer,buffer_size);
ret = buffer_size;
}

return ret;
}

int proc_write(struct file *filp, const char *buffer, unsigned long count, void *data)
{

if(count > proc_max_size)
count = proc_max_size;
if(copy_from_user(tx_buffer,buffer,count))
return -EFAULT;
// tx_buffer[count] = '\0';
buffer_size = count;
return count;
}


my i/p to prog was tcp 192.137.190.187
and i do cat /proc/tx_info gives me following o/p:

tcp 192.137.190.18�

why last digit of ip address is not printing

MensaWater 03-26-2012 08:38 AM

If this is SOLVED as you marked it can you provide your solution? It will help others who find this later.


All times are GMT -5. The time now is 12:34 AM.