Making hard link to a file in C


 
Thread Tools Search this Thread
Top Forums Programming Making hard link to a file in C
# 1  
Old 03-04-2010
Making hard link to a file in C

hi there guys

could someone please, show me how to make a hard link to a file in c language ?

i am using minix. The program below reads the last number from file numbers, adds a one to it and then appends the new number into the file. I use a c script as driver to this program, the c script has 6 processors of this program. the processors read and write into the numbers file at the same time, causing disoder in the numbers file. so in order to put some order into this chaos, i want to use a hard link to the file numbers, which will prevent other processors to access the file when it is being used by onother processor.

But the way i am using link isn't working, can someone help ?

I am sorry for the lack of documentation in the code

Code:
# include <stdio.h>
# include <unistd.h> 

int readlastline(void){
	
FILE *f_ptr = fopen("numbers", "r"); 
int last = 0;
fseek(f_ptr, -5, SEEK_END);


	fscanf(f_ptr, "%5d", &last); 
		
	fclose(f_ptr);

	return last;
}

void add_append(int i){
	
FILE *fp = fopen("numbers", "a");

	if(i == 0){

		fprintf(fp," %5d \n", i);
		i++;
		fprintf(fp," %5d \n", i);

	}
	else{
		i++;
		fprintf(fp," %5d \n", i);
	}

	fclose(fp);
}

void main(void){

int count = 0;
char *numbers = "numbers";
char *lock = "lock";
int x;

	while ( count < 500){
		count++;
		
		if(link(numbers, lock) == 0){
		      	printf("in %s \n", " link succeed ");	
			x = readlastline();
			add_append(x);
			unlink(lock);
	
			
		}
	}
}

--------------------------------------------------------------------------
The c script:

Code:
/bin/sh
# testcount1 drives multiple instances of count1

rm -f numbers	# first remove the numbers file
echo 0 > numbers	# and initialise it to contain a 0

./count3 &	# run multiple processes in the background
./count3 &
./count3 &
./count3 &
./count3 &
./count3 	# except for the last to let us know when they are done
		# run ps to be certain all the processes have finished


Last edited by surubi_abada; 03-04-2010 at 02:22 PM..
# 2  
Old 03-04-2010
depending on your OS:
Code:
man -s 2 link

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Creating hard link with name

How can I create a hard link to a file, then rename the hard link to a different name? (2 Replies)
Discussion started by: fhill2
2 Replies

2. UNIX for Dummies Questions & Answers

hard link concept

I created a file named as file and a its hard link named as hlink. Problem is that when I delete the file , it gets deleted without notifying that hardlink exists. But as far as I think we cannot delete the file unless we delete all the hard links pointing to it. Is there anything worng... (1 Reply)
Discussion started by: hiten.r.chauhan
1 Replies

3. UNIX for Advanced & Expert Users

Hard Link Examples

Hello, Please move this if I chose the wrong forum category. This question pertains to Unix and Linux I believe. I google the difference between hard and symbolic/soft links and I understand the difference. What I am trying to find is a real example of a hard link being used in a Operating... (11 Replies)
Discussion started by: jaysunn
11 Replies

4. UNIX for Dummies Questions & Answers

Difference between hard link and soft link

Hi Experts, Please help me out to find out difference between a hard link and a soft link. I am new in unix plz help me with some example commands ( for creating such links). Regards S.Kamakshi :) (2 Replies)
Discussion started by: kamakshi s
2 Replies

5. UNIX for Dummies Questions & Answers

Hard Link vs SOft Link????

Hi PLease let me know the usage of Hard Link vs Soft Link i.e what is the basic difference and what happens when one file is changed or deleted in both the cases??? thanks (3 Replies)
Discussion started by: skyineyes
3 Replies

6. UNIX for Advanced & Expert Users

Hard link

Hello, In unix, the normal user can't create a hardlink for a directory. why..? Is there any difference between creating a hard link for a file and directory? The super user can create a hard link for directories. Why we cannot create and super user can create.? Please, can anyone help... (1 Reply)
Discussion started by: nagalenoj
1 Replies

7. UNIX for Dummies Questions & Answers

need some info about symbolic link and hard link

hello folks how y'all doin well i have some questions about symbolic link and hard link hope some one answer me i open terminal and join as root and i wrote ln -s blah blah then i wrote ls i see red file called blah blah but didn't understand what is this can some one explain and... (2 Replies)
Discussion started by: detective linux
2 Replies

8. UNIX for Dummies Questions & Answers

Difference between hard link and soft link in unix

Hi All, Can any one please explain me what is the difference between hard link and soft link in UNIX. Thanks in advance Raja Chokalingam. (2 Replies)
Discussion started by: RAJACHOKALINGAM
2 Replies

9. UNIX for Dummies Questions & Answers

Why use a hard link

Someone asked me a question today about the difference between a hard link and a soft link. That got me thinking and maybe someone can answer. Why would I ever use a hard link if I can use a soft link instead? (2 Replies)
Discussion started by: dangral
2 Replies

10. UNIX for Advanced & Expert Users

Differences between hard link and soft link

Hi all! I'd like to know the differences between hard links and soft links. I've already read the ln manpage, but i'm not quite sure of what i understood. Does a hard link sort of copy the file to a new name, give it the same inode number and same rights? What exactly should I do to do this:... (3 Replies)
Discussion started by: penguin-friend
3 Replies
Login or Register to Ask a Question